matlab如何画出多条曲线的动画?

您所在的位置:网站首页 matlab 画多条曲线 matlab如何画出多条曲线的动画?

matlab如何画出多条曲线的动画?

#matlab如何画出多条曲线的动画?| 来源: 网络整理| 查看: 265

2.6.17 Matlab制作动画效果的八个案例

颜值即正义;

颜色模板参考:

Matlab 制作动画效果的方法还挺多的,下面用 8 个案例来演示效果

clear;clc;close all; % 获取到颜色 [all_themes, all_colors] = GetColors();案例一:重复绘图fig = figure; x = linspace(0, 2*pi, 100); im = cell(1, 20); for i = 1:20 y = sin(i*x/5); plot(x, y, 'Color', all_colors(1, :), 'LineWidth', 2); xlim([0, 2*pi]); pause(0.25); % 注释下面两句话可以看到动态输出 frame = getframe(fig); im{i} = frame2im(frame); end % 下面是保存成 gif filename = 'D:\MyPrograms\DataSet\程序运行截图\Matlab_2_7_6_Curve_Animation1.gif'; for idx = 1:20 % 制作gif文件,图像必须是index索引图像 [A, map] = rgb2ind(im{idx}, 256); if idx == 1 imwrite(A, map, filename, 'gif', 'LoopCount', Inf, 'DelayTime', 0.3); else imwrite(A, map, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.3); end end案例二:使用 animatedline 函数fig = figure; h = animatedline('Color', all_colors(1, :), 'Marker', 'o', 'LineWidth', 2); axis([0, 4*pi, -1, 1]) x = linspace(0, 4*pi, 50); y = sin(x); im = cell(1, length(x)); for k = 1:length(x) addpoints(h, x(k), y(k)); drawnow % 注释下面两句话可以看到动态输出 frame = getframe(fig); im{k} = frame2im(frame); end % 下面是保存成 gif filename = 'D:\MyPrograms\DataSet\程序运行截图\Matlab_2_7_6_Curve_Animation2.gif'; for idx = 1:length(x) % 制作gif文件,图像必须是index索引图像 [A, map] = rgb2ind(im{idx}, 256); if idx == 1 imwrite(A, map, filename, 'gif', 'LoopCount', Inf, 'DelayTime', 0.3); else imwrite(A, map, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.3); end end案例三:动态趋势线可视化案例四:目标沿轨迹运动1fig = figure; % 生成轨迹 x = linspace(0, 2*pi, 20); y = sin(x); minX = min(x); maxX = max(x); minY = min(y); maxY = max(y); % 在特定位置绘制轨迹图 h1 = axes('position', [0.1, 0.1, 0.8, 0.8]); plot(x, y, 'Color', all_colors(1, :), 'LineWidth', 2); % 设置显示范围 xlim([minX, maxX]); ylim([minY, maxY]); % 图片尺寸 sizeQQ = 0.05; posX = 0.1; poxY = 0.85; % 图像的位置 h2 = axes('position', [posX poxY sizeQQ sizeQQ]); % 显示图片 imshow('data\qq.bmp'); im = cell(1, length(x)); for i = 1 : length(x) % 计算图片的位置 posX = (x(i) - minX) / (maxX - minX) * 0.8 + 0.1; posY = (y(i) - minY) / (maxY - minY) * 0.8 + 0.1; % 删除之前的图片 delete(h2); % 在新的位置显示 h2 = axes('position', [posX posY sizeQQ sizeQQ]); imshow('data\qq.bmp'); % 暂停以显示动态过程 pause(0.1); % 注释下面两句话可以看到动态输出 frame = getframe(fig); im{i} = frame2im(frame); end % 下面是保存成 gif filename = 'D:\MyPrograms\DataSet\程序运行截图\Matlab_2_7_6_Curve_Animation4.gif'; for idx = 1:length(x) % 制作gif文件,图像必须是index索引图像 [A, map] = rgb2ind(im{idx}, 256); if idx == 1 imwrite(A, map, filename, 'gif', 'LoopCount', Inf, 'DelayTime', 0.3); else imwrite(A, map, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.3); end end案例五:标记点沿轨迹运动fig = figure; % 生成轨迹 x = linspace(0, 2*pi, 30); y = sin(x); plot(x, y, 'Color', all_colors(1, :), 'LineWidth', 2); hold on plt = plot(x(1), y(1), 'o', 'MarkerFaceColor', all_colors(6, :)); hold off im = cell(1, length(x)); for i = 1 : length(x) plt.XData = x(i); plt.YData = y(i); % 暂停以显示动态过程 pause(0.1); % 注释下面两句话可以看到动态输出 frame = getframe(fig); im{i} = frame2im(frame); end % 下面是保存成 gif filename = 'D:\MyPrograms\DataSet\程序运行截图\Matlab_2_7_6_Curve_Animation4.gif'; for idx = 1:length(x) % 制作gif文件,图像必须是index索引图像 [A, map] = rgb2ind(im{idx}, 256); if idx == 1 imwrite(A, map, filename, 'gif', 'LoopCount', Inf, 'DelayTime', 0.3); else imwrite(A, map, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.3); end end案例六:目标沿轨迹运动2fig = figure; % 生成轨迹 x = linspace(0, 2*pi, 30); y = sin(x); plot(x, y, 'Color', all_colors(1, :), 'LineWidth', 2); h = hgtransform('Parent', gca); hold on plot(x(1), y(1), 'o', 'Parent', h, 'MarkerFaceColor', all_colors(6, :)); hold off txt = text(x(1), y(1), num2str(y(1)), 'Parent', h); im = cell(1, length(x)); for i = 1 : length(x) % 平移操作 h.Matrix = makehgtform('translate', x(i) - x(1), y(i) - y(1), 0); txt.String = num2str(y(i)); % 暂停以显示动态过程 pause(0.1); % 注释下面两句话可以看到动态输出 frame = getframe(fig); im{i} = frame2im(frame); end % 下面是保存成 gif filename = 'D:\MyPrograms\DataSet\程序运行截图\Matlab_2_7_6_Curve_Animation5.gif'; for idx = 1:length(x) % 制作gif文件,图像必须是index索引图像 [A, map] = rgb2ind(im{idx}, 256); if idx == 1 imwrite(A, map, filename, 'gif', 'LoopCount', Inf, 'DelayTime', 0.3); else imwrite(A, map, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.3); end end案例七:图形对象动画fig = figure; % 生成轨迹 t = linspace(0, 2*pi, 30); x = cos(t); y = sin(t) / 2; plot(x, y, 'Color', all_colors(1, :), 'LineWidth', 2); axis equal x1 = [-1, 0, 1]; y1 = [0, 0.5, 0]; hold on f = area(x1, y1); hold off im = cell(1, length(x)); for i = 1 : length(x) % 平移操作 x1(2) = x(i); y1(2) = y(i); f.XData = x1; f.YData = y1; % 暂停以显示动态过程 pause(0.1); % 注释下面两句话可以看到动态输出 frame = getframe(fig); im{i} = frame2im(frame); end % 下面是保存成 gif filename = 'D:\MyPrograms\DataSet\程序运行截图\Matlab_2_7_6_Curve_Animation6.gif'; for idx = 1:length(x) % 制作gif文件,图像必须是index索引图像 [A, map] = rgb2ind(im{idx}, 256); if idx == 1 imwrite(A, map, filename, 'gif', 'LoopCount', Inf, 'DelayTime', 0.3); else imwrite(A, map, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.3); end end

案例八:彗星图

figure; % 生成轨迹 t = linspace(0, 4*pi, 100); x = -sin(t) - sin(t/2); y = -cos(t) + cos(t/2); comet(x, y);绘图案例总结2. 典型绘图案例

2. 典型绘图案例 2.1 优雅的绘图颜色 2.1.1 颜色模板 2.1.2 定制colormap 2.2 二维绘图 2.2.1 曲线图、散点图 2.2.2 带有误差线的柱状图 2.2.3 简单曲线之间填充 2.2.4 复杂函数曲线之间填充 2.2.5 渐变色曲线、渐变色填充 2.2.6 带箭头曲线 2.2.7 多个Y轴 2.2.8 旋转多边形 2.2.9 带箭头流线 2.2.10 极坐标绘图技巧 2.2.11 条形分布图 2.3 三维绘图 2.3.1 给球面贴背景图 2.3.2 三维矢量场图 2.3.3 单独设置子图的colormap 2.3.4 曲面裁剪 2.3.5 三维曲线、散点图 2.3.6 等高线图 2.3.7 绘制伪彩图和投影图 2.4 四维绘图 2.4.1 slice切片显示 2.5 函数方程可视化 2.5.1 一元方程 2.5.2 二元方程 2.5.3 三元方程 2.6 特殊绘图 2.6.1 动态趋势线可视化 2.6.2 Newton-Raphson、Julia分形 2.6.3 分形树叶 2.6.4 在指定区域内随机生成不相交不相切的圆 2.6.5 创建gif动图 2.6.6 梯度下降法的下降方向 2.6.7 目标沿指定轨迹运动 2.6.8 看起来像拼接两个Axis 2.6.9 设置特殊的图例 2.6.10 甲烷模型 2.6.11 在随机圆里产生随机点 2.6.12 斜线填充的曲线 2.6.13 球板模型 2.6.14 BP神经网络图 2.6.15 由一系列圆构成的圆环 2.6.16 棋盘格



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3